// C++ author 清晨与猫鱼
#include <iostream>
#include <string>
#include "Realize.h"        // 引入实现文件

using namespace std;

int main(const int argc, const char** argv)
{	
    // 定义一个错误处理对象
	ErrorLogger errorLogger(AbstractLogger::ERROR);
    
    // 定义一个文件处理对象
    AbstractLogger* fileLogger = new FileLogger(AbstractLogger::DEBUG);

    // 定义一个控制台处理对象
    AbstractLogger* consoleLogger = new ConsoleLogger(AbstractLogger::INFO);

    // 错误对象设置 文件处理对象为下一个对象处理
    errorLogger.setNextLogger(fileLogger);

    // 文件对象设置 控制台处理对象为下一个对象处理
    fileLogger->setNextLogger(consoleLogger);

    // 第一个信息 等级设置 INFO
    errorLogger.logMessage(AbstractLogger::INFO, "This is an information.");

    cout << "\n\n";

    // 第二个消息 等级设置 DEBUG
    errorLogger.logMessage(AbstractLogger::DEBUG, "This is a debug level information.");

    cout << "\n\n";
    
    // 第三个消息 等级设置 ERROR
    errorLogger.logMessage(AbstractLogger::ERROR,  "This is an error information.");
}